﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BoletoElectronicoDesktop.AbmUsuario
{
    public partial class FormModificarUsuario : Form
    {
        public  string username;
        public  string habilitado;

        public FormModificarUsuario()
        {
            InitializeComponent();
        }

        private void FormModificarUsuario_Load(object sender, EventArgs e)
        {//maximizo la ventana
            this.WindowState = FormWindowState.Maximized;
           //cargo el nombre de usuario
            txtUserName.Text = username;
            txtUserName.Enabled = false;
            txtPass.Text = "";

            //cargo la lista de roles habilitados en el chlbRoles
            DataTable dt = UsuarioDAO.FiltrarRolesHabilitados();
            chlbRoles.DataSource = dt;
            chlbRoles.DisplayMember = "RolNombre";
            chlbRoles.ValueMember = "RolId";

            //cargo la lista de roles que el usuario tiene asignados
            
            //marco los items del listbox
            int Existe;
            int TotFunc = Convert.ToInt32(chlbRoles.Items.Count.ToString());

            for (int i = 0; i < TotFunc; i++)
            {

                Existe = UsuarioDAO.ObtenerRolDeUsuario(username, dt.Rows[i].ItemArray[0].ToString());
                if (Existe != 0)
                {
                    chlbRoles.SetItemChecked(i, true);
                }
            }

            //habilito la opción de habilitar si corresponde
            
            //cargo el checkbox
            
            if (string.Compare(habilitado, "3") != 0)
            {
                chbHabilitado.Checked = true;
                chbHabilitado.Enabled = false;

            }
            


        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            //si ingresa algo en la contraseña, lo actualizo
            if (txtPass.Text != "")
            {
                string hasheada = Funciones.ObtenerContraseñaHash(txtPass.Text);
                UsuarioDAO.ActualizarContraseña(username, hasheada);
            }
            //si el usuario está inhabilitado y checkea el checkbox => actualizar habilitado
            if((string.Compare(habilitado,"3") ==0) && (chbHabilitado.Checked == true))
                UsuarioDAO.HabilitarUsuario(username);

            //elimino todos los roles que tiene asignado
            UsuarioDAO.EliminarRolesUsuario(username);

            //inserto 1*1 las funcionalidades de ese rol en la tabla FuncionalidadXRol

            foreach (DataRowView FilaSeleccionados in chlbRoles.CheckedItems)
            {
                UsuarioDAO.InsertarRolPorUsuario(username, FilaSeleccionados.Row[0].ToString());
            }
            MessageBox.Show("Usuario modificado con éxito");

            Close();
            

        }
    }
}
